/*@description:nginx 关于进程间通信的接口定义
 *
 *
 *
 *
 *
 *
 *
 */

/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGX_CHANNEL_H_INCLUDED_
#define _NGX_CHANNEL_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_event.h>

/*@brief:nginx
 * 监控进程和工作进程之间的消息体，工作进程之间消息通信也靠这个结构体;
 *
 *
 *
 */
typedef struct {
    ngx_uint_t  command;  //传递的命令
    ngx_pid_t   pid; //进程号
    ngx_int_t   slot; //槽位号
    ngx_fd_t    fd; //管道套接字;
} ngx_channel_t;


/****************************************************************************************************************************************************
 *@description:接口定义
 *@发送消息事件
 *@接收消息事件
 *@添加事件
 *@关闭通道
 ***************************************************************************************************************************************************/
ngx_int_t ngx_write_channel(ngx_socket_t s, ngx_channel_t *ch, size_t size, ngx_log_t *log);
ngx_int_t ngx_read_channel(ngx_socket_t s, ngx_channel_t *ch, size_t size, ngx_log_t *log);
ngx_int_t ngx_add_channel_event(ngx_cycle_t *cycle, ngx_fd_t fd, ngx_int_t event, ngx_event_handler_pt handler);
void ngx_close_channel(ngx_fd_t *fd, ngx_log_t *log);


#endif /* _NGX_CHANNEL_H_INCLUDED_ */
